// UVa10305 Ordering Tasks
// 陈锋
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int NN = 104;
vector<int> G[NN];
int VIS[NN];
void dfs(int u, deque<int> &order) {
  VIS[u] = -1;
  for (size_t i = 0; i < G[u].size(); i++) {
    int v = G[u][i];
    assert(VIS[v] != -1);
    if (!VIS[v])
      dfs(v, order);
  }
  VIS[u] = 1, order.push_front(u);
}
int main() {
  for (int n, m; scanf("%d%d", &n, &m) == 2 && n;) {
    for(int i = 0; i < n; i++) G[i].clear();
    for(int i = 0, u, v; i < m; i++) 
      scanf("%d%d", &u, &v), G[u-1].push_back(v-1); // u<v, u-->v;
    fill_n(VIS, NN, 0);
    deque<int> O;
    for(int u = 0; u < n; u++)
      if (VIS[u] != 1) dfs(u, O);
    for (size_t i = 0; i < O.size(); i++)
      printf("%d%s", O[i] + 1, i == O.size() - 1 ? "\n" : " ");
  }
  return 0;
}
/*
算法分析请参考: 《入门经典-第2版》例题6-15
注意本题使用了deque作为支持在头部快速插入元素O(1)的序列容器
*/
// 19186585 10305 Ordering Tasks  Accepted  C++11 0.000 2017-04-16 16:37:36